По информации о типе преобразует заданные имена в соответствующие DISPID. Это рекомендуемая реализация IDispatch::GetIDsOfNames.
HRESULT DispGetIDsOfNames ( ITypeInfo*ptinfo, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, DISPID FAR* rgdispid );
Параметры
ptinfo
Указатель на информацию о типе для интерфейса.
Эта информация специфична для одного интерфейса и кода языка, так что функции
нет необходимости передавать идентификатор интерфейса (IID) и
LCID.
rgszNames
Содержащий имена массив строк; это может
быть тот же самый массив, что был передан Displnvoke в структуре DISPPARAMS.
Если cNames больше 1, то первое имя рассматривается как имя метода, а
последующие — как имена параметров данного метода.
cNames
Число
элементов rgszNames.
rgdispid
Указатель на массив
DISPID, который функция должна заполнить. Первый идентификатор
соответствует имени метода, остальные — именам его параметров.
Коды возврата
Из возвращенного HRESULT получают один из следующих
кодов возврата:
Код возврата | Значение |
S_OK | Интерфейс поддерживается. |
E_INVALIDARG | Один из параметров неверен. |
DISP_E_UNKNOWNNAME | Одно или несколько заданных имен неизвестны. В элементах возвращаемого массива DISPID, соответствующих неизвестным именам, будет содержаться значение DISPID_UNKNOWN. |
Другие | Могут также возвращаться любые коды возврата ITypelnfo-Invoke. |
Пример
Следующий код из примера Lines (файл Points.cpp)
реализует функцию-член GetlDs-OfNames для класса CPoints с помощью
DispGetlDsOfNames.
STDMETHODIMP CPoints::GetIDsOfNames( REFIID riid, OLECHAR FAR* FAR* rgszNames, UINT cNames, LCID lcid, DISPID FAR* rgdispid) { return DispGetIDsOfNames(m_ptinfo, rgszNames, cNames, rgdispid); }